#region Microsoft Public License
/*
 * (c) Copyright Chenjun Wu. http://utablesdk.codeplex.com
 * 
 * This source is subject to the Microsoft Public License (Ms-PL).
 * Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.
 * All other rights reserved.
 */
#endregion

using System;
using System.Collections.Generic;
using System.Windows.Threading;
using UTable.Input;
using UTable.ObjectManager.Commands;
using UTable.Objects;

namespace UTable.ObjectManager
{
    public interface IGlobalObjectManager
    {
        IObjectTree ObjectTree { get; set; }

        IInputManager InputManager { get; set; }

        Dispatcher Dispatcher { get; }

        void StartWork();

        IObject CreateObject(IObject owner, ObjectCreateParameter parameter);

        IObject CreateObject(ObjectCreateParameter parameter);

        void PutCommands(List<ICommand> cmds);

        void SetLayoutPolicy(IObject obj, Type layoutPolicyType, object param);

        void UpdateLayoutPolicy(IObject obj, object param);

        void SetAuthorizationPolicy(IObject obj, Type authorizationPolicyType, object param);

        void UpdateAuthorizationPolicy(IObject obj, object param);

        void SetConflictResolvePolicy(IObject obj, Type conflictResolvePolicyType, object param);

        void UpdateConflictResolvePolicy(IObject obj, object param);
    }
}
